package promotion.model;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.restlet.data.MediaType;
import org.restlet.ext.xml.DomRepresentation;
import org.restlet.representation.Representation;
import promotion.jdom.JDOMRepresentation;

/**
 * Classe représentant une promotion contenant une liste d'étudiants
 * @author marya
 */
public class Promotion {

    private Integer id_promotion;
    private String url;
    private String nom;
    private List<Etudiant> etudiants;

    public Promotion() {
        this.etudiants = new ArrayList<Etudiant>();
    }

    public Promotion(Integer idPromotion, String nom) {
        this.id_promotion = idPromotion;
        this.nom = nom;
        this.etudiants = new ArrayList<Etudiant>();
    }

    public Integer getIdPromotion() {
        return id_promotion;
    }

    public void setIdPromotion(Integer idPromotion) {
        this.id_promotion = idPromotion;
    }

    public List<Etudiant> getEtudiants() {
        return etudiants;
    }

    public void setEtudiants(List<Etudiant> etudiants) {
        this.etudiants = etudiants;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * Permet à une instance de cette classe de
     * générer elle-même le XML lui représentant
     * @return element JDOM
     */
    public Representation toXML() throws IOException, JDOMException {
        Element racine = new Element("promotion");
        Document d = new Document(racine);
        if (url != null) {
            racine.setAttribute("url", url);
        }

        Element elementNom = new Element("nom");
        elementNom.setText(nom);
        racine.addContent(elementNom);

        for (Etudiant etudiant : etudiants) {
            Element elementEtudiant = etudiant.toJDOMElement();
            racine.addContent(elementEtudiant);
        }

        DomRepresentation representation = new JDOMRepresentation(MediaType.TEXT_XML, d);

        return representation;
    }
}
